/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2022年6月23日
 * <修改描述:>
 */
package com.tx.component.file.catalog;

import com.tx.component.file.resource.FCResource;
import com.tx.component.file.util.FileContextUtils;
import com.tx.core.exceptions.util.AssertUtils;

/**
 * 获取ViewUrl的处理器<br/>
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年6月23日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public interface ViewUrlHandler {
    
    /**
     * 获取ViewUrl的对外的访问路径<br/>
     *    可以是阿里云，或七牛云的定制实现，返回一个公网上的访问链接地址<br/>
     * <功能详细描述>
     * @param resource
     * @param catalog
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default String getViewUrl(FCResource resource, VitualFileCatalog catalog) {
        AssertUtils.notNull(resource, "resource is null.");
        AssertUtils.notNull(catalog, "catalog is null.");
        AssertUtils.notEmpty(resource.getRelativePath(),
                "resource.relativePath is empty.");
        
        //没有公共读权限的文件，其ViewUrl为空字符串
        switch (catalog.getPermission()) {
            case PUBLIC_READ:
            case PUBLIC_READ_WRITE:
                return FileContextUtils.defaultViewUrl(resource.getCatalog(),
                        resource.getRelativePath());
            default:
                //如果
                return "";
        }
    }
}
